// API: 审查记录相关接口
import { apiClient } from '@/utils/require'

/**
 * 审查记录类型定义
 */
export interface ReviewRecord {
  id: number
  review_type: 'extra' | 'punish' | 'score'  // 审查类型
  review_type_display?: string
  student?: any
  student_name?: string
  reviewer?: any
  reviewer_name?: string
  status: 'pending' | 'approved' | 'rejected'  // 审核状态
  status_display?: string
  content: string           // 审核内容
  remarks: string           // 备注
  review_time?: string      // 审核时间
  created_at: string
  updated_at: string
}

export interface PaginatedResponse<T> {
  count: number
  next: string | null
  previous: string | null
  results: T[]
}

/**
 * 审查记录管理API（只读）
 * 
 * API说明：
 * - 基础路径：/api/review-records/
 * - 认证方式：Token认证
 * - 权限：仅查询，不支持创建/修改/删除
 * - 用途：记录所有审查操作的历史（附加分、处分、综测分等）
 * - 审查类型：
 *   - extra: 附加分审查
 *   - punish: 处分审查
 *   - score: 综测分审查
 */
export const reviewRecordAPI = {
  /**
   * 获取审查记录列表
   * 
   * 接口：GET /api/review-records/
   * 权限：已认证用户
   * 
   * @param params 查询参数
   * @param params.page 页码
   * @param params.page_size 每页数量
   * @param params.review_type 审查类型（extra=附加分、punish=处分、score=综测分）
   * @param params.student 按学生ID筛选
   * @param params.status 审核状态（pending=待审、approved=已通过、rejected=已拒绝）
   * 
   * @returns 审查记录列表
   */
  getReviewRecordList: (params?: {
    page?: number
    page_size?: number
    review_type?: 'extra' | 'punish' | 'score'
    student?: number
    status?: 'pending' | 'approved' | 'rejected'
  }) => {
    return apiClient.get<PaginatedResponse<ReviewRecord>>('/review-records/', { params })
  },

  /**
   * 获取审查记录详情
   * 
   * 接口：GET /api/review-records/{id}/
   * 权限：已认证用户
   * 
   * @param id 审查记录ID
   * @returns 审查记录详细信息（包含学生、审核人、审核内容等）
   */
  getReviewRecordDetail: (id: number) => {
    return apiClient.get<ReviewRecord>(`/review-records/${id}/`)
  }
}

export default reviewRecordAPI
